#ifndef SERVER_H
#define SERVER_H

#include <boost/asio.hpp>

using boost::asio::ip::tcp;

class Server {
public:
    Server(boost::asio::io_context& io_context, short port);
    // 查看是否存在csv文件，不存在则创建
    void ensure_file_exists(const char* file_name);

private:
    // 等待客户端连接
    void start_accept();
    // 如果有客户端连接，触发这个函数
    void handle_accept(const boost::system::error_code& error);
    // 客户端连接后，触发这个函数
    void start_receive();
    // 服务端如何处理客户端发过来的字节数据
    void handle_receive(const boost::system::error_code& error, size_t bytes_transferred);
    // 将数据保存到csv文件。如果文件存在就保存数据，如果不存在就直接过，不保存数据
    void save_to_csv(int64_t timestamp, int measurement, double speed, int dir);

    std::string filename;
    tcp::acceptor acceptor_;
    tcp::socket socket_;
    enum { max_length = 1024 };
    char data_[max_length];
};

#endif // SERVER_H
